#ifndef __EVENTNEEDGENERIKADD_HPP__
#define	__EVENTNEEDGENERIKADD_HPP__

#include <vector3d.h>
#include "../EventBase.hpp"

namespace Event
{
    class EventNeedGenerikAdd :
    public EventBase
    {
    protected:
        
		EventNeedGenerikAdd( float _timeToWait = 0, int _nbFires = 0) :
			EventBase((void*)NULL,EVENT_NEED_GENERIK_ADD, _timeToWait, _nbFires),
			m_type(0),
			m_idToAdd(0),
			m_phase(0),
			m_age(0),
			m_position(0,0,0)
        {
        }
		/**
         * @fn       EventNeedGenerikAdd(unsigned long _idToAdd, float _timeToWait = 0, int _nbFires = 0))
         * @brief    Contructor
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        /*EventNeedGenerikAdd(int _type, unsigned long _idToAdd, 
			boost::uint8_t _phase,
            boost::uint8_t _age,
            const irr::core::vector3df& _position,
            float _timeToWait = 0, int _nbFires = 0) :
        EventBase((void*)NULL,EVENT_NEED_GENERIK_ADD, _timeToWait, _nbFires),
        m_type(_type),
        m_idToAdd(_idToAdd),
        m_phase(_phase),
        m_age(_age),
        m_position(_position)
        {
        }*/
    public:
        /**
         * @fn       EventNeedGenerikAdd(void* _sender, unsigned long _idToAdd, float _timeToWait = 0, int _nbFires = 0))
         * @brief    Contructor
         * @param    _timeToWait     time we have to wait before firing the event
         * @param    _nbFires        number of time we have to fire the event
         */
        EventNeedGenerikAdd(void* _sender, int _type, unsigned long _idToAdd, 
                        boost::uint8_t _phase,
                        boost::uint8_t _age,
                        const irr::core::vector3df& _position,
                        float _timeToWait = 0, int _nbFires = 0) :
        EventBase(_sender, EVENT_NEED_GENERIK_ADD, _timeToWait, _nbFires),
        m_type(_type),
        m_idToAdd(_idToAdd),
        m_phase(_phase),
        m_age(_age),
        m_position(_position)
        {
        }

        /**
         * @fn       EventNeedGenerikAdd(const EventNeedGenerikAdd& orig)
         * @brief    Copy Contructor
         * @param    orig       Copy of the event we have to do
         */
        EventNeedGenerikAdd(const EventNeedGenerikAdd& orig) :
        EventBase(orig),
        m_type(orig.m_type),
        m_idToAdd(orig.m_idToAdd),
        m_phase(orig.m_phase),
        m_age(orig.m_age),
        m_position(orig.m_position)
        {
        }

        /**
         * @fn       getType()
         * @brief    Getter on the event
         * @return   event of the keyboard
         */
		int getType()
        {
            return m_type;
        }


        /**
         * @fn       getIdToAdd()
         * @brief    Getter on the event
         * @return   event of the keyboard
         */
		unsigned long getIdToAdd()
        {
            return m_idToAdd;
        }
        /**
         * @fn       getPhase()
         * @brief    Getter on the event
         * @return   event of the keyboard
         */
		boost::uint8_t getPhase()
        {
            return m_phase;
        }
        /**
         * @fn       getAge()
         * @brief    Getter on the event
         * @return   event of the keyboard
         */
		boost::uint8_t getAge()
        {
            return m_age;
        }
        /**
         * @fn       getPosition()
         * @brief    Getter on the event
         * @return   event of the keyboard
         */
		irr::core::vector3df getPosition()
        {
            return m_position;
        }

        /**
         * @fn       ~EventNeedGenerikAdd()
         * @brief    Virtual Destructor
         */
        virtual ~EventNeedGenerikAdd()
        {
        }
    protected:
        int     m_type;
        unsigned long m_idToAdd;
        boost::uint8_t m_phase;
        boost::uint8_t m_age;
        irr::core::vector3df m_position;

    };

} //  namespace Event


#endif	/* __EVENTNEEDGENERIKADD_HPP__ */

